﻿#coding:utf-8
#!/usr/bin/env python
#filename:add.py

import cPickle as p

try:
    f=file('add.data')
    message=p.load(f)
except IOError:
    f=file('add.data','w')
    f.close()
    massage=[]
except EOFError:
    f.close()

class information:
    def __init__(self,message):
        self.message=message
   
    def append(self):
        '''向文件中追加数据。'''

        name=raw_input('请输入你的名字：')
        age=raw_input('请输入你的年龄：')
        email=raw_input('请输入你的邮件地址：')

        detail={'name':name,'age':age,'email':email}
        self.message.append(detail)        #追加到列表中去。

    def modify(self):
        '''修改输入人的信息'''

        name=raw_input('请输入要修改的联系人的名字：')
        item=raw_input('请输入要修改的项目（1.名字-2.年龄-3.电子邮件地址)[回车默认修改名字]：')        #选择数字，操作更方便
        value=raw_input('请输入修改的内容:')

        if item=='1':
            itte_modify='name'
        elif item=='2':
            item_modify='age'
        elif item=='3':
            item_modify='email'
        else:
            item_modify='name'    #默认输入的内容为"名字"
        for detail in self.message:        #遍历字典中的所有数据，并将值传送给detail
            if name==detail['name']:
                detail[item_modify]=value    #将输入的内容，添加到列表中去。
                break

    def delete(self):
        '''删除所输入姓名列表'''

        name=raw_input('请输入要删除人的名字：')
        for detail in self.message:
            if name==detail['name']:
                del message[message.index(detail)]
   
    def find(self):
        '''按输入项目进行查找'''

        item=raw_input('请输入查询关键字：1.姓名－2、年龄－3、电子信箱:')
        value=raw_input('请输入相应关键字内容：')

        if item=='1':
            item_find='name'
        elif item=='2':
            item_find='age'
        elif item=='3':
            item_find='email'
        else:
            item_find='name'
       
        for detail in self.message:
            if value==detail[item_find]:
                print detail
                break
#            else:
#                print '没有搜索到你输入的内容，请重新输入！'
#                continue
        print '搜索完毕!'

    def printAll(self):
        '''打印所有数据列表。'''

        for list in self.message:
            print list
   
    def quit(self):
        '''退出程序'''
       
        if raw_input('确认要保存吗？(y/n):')=='y':
            f=file('add.data','w')
            p.dump(message,f)
            f.close()


if __name__=='__main__':

    print '\n欢迎使用通迅录\n'

    i=information(0)

    while True:
        print
        print '1.添加'
        print '2.修改'
        print '3.删除'
        print '4.搜索'
        print '5.打印列表'
        print 'Q.退出'

        value=raw_input('请选择（1,2,3,4,5,Q):')
        if value=='1':
            i.append()
        elif value=='2':
            i.modify()
        elif value=='3':
            i.delete()
        elif value=='4':
            i.find()
        elif value=='5':
            i.printAll()
        elif value=='q':
            i.quit()
            break
        else:
            print '选择输入错误，请重新选择。'
    print '再见，欢迎下次再使用!'
